perm filename NEWBAC[L70,TES] blob sn#009941 filedate 1972-06-27 generic text, type T, neo UTF8
00100	SELECT E0 FROM I:E1 NEXT E2 UNLESS E3 IN WHICH CASE E4
00200	
00300	begin
00400	i ← e1 ;
00500	go to check ;
00600	loop:
00700	i ← e2 ;
00800	check:
00900	if e3 then return(e4) ;
01000	create context from loop ;
01100	return(e0) ;
01200	end ;
01300	
01400	begin
01500	i ← e1 ;
01600	while ¬e3 do
01700		begin
01800		create context from try ;
01900		i ← e2 ;
02000		end ;
02100	return(e4) ;
02200	try:
02300	return(e0) ;
02400	end
02500	
02600	begin
02700	for i ← e1 next e2 while ¬e3 do try return(e0) ;
02800	return(e4) ;
02900	end ;
03000	
03100	begin
03200	for i ← 1 to n do try return(i) ;
03300	fail ;
03400	end ;
03500	
03600	THNOT
03700	
03800	begin
03900	decision point m:
04000	create context failing to L ;
04100	e ;
04200	fail twice ;
04300	L:
04400	prune to M ;
04500	return T ;
04600	end ;
04700	
04800	begin
04900	try e prog2 fail ;
05000	return T ;
05100	end ;
05200	
05300	in new context e also fail ;
05400	for i in L try i otherwise fail ;
05500	
05600	function choice(n) = for i ← 1 to n choose i otherwise fail ;
05700	
05800	macro select e0 from i:e1 next e2 unless e3 in which case e4 =
05900		for i ← e1 next e2 while ¬e3 try e0 otherwise e4 ;
06000	
06100	function thnot(e) = try e also fail otherwise T ;
06200	
06300	try e
06350		begin
06400		create context failing to L ;
06500		return e ;
06600		L:
06650		fail ;
06700		end ;
06800	
06900	for <clauses> try e [otherwise d]
07000		begin new ev ;
07100		for <clauses> do
07200			begin
07300			create context failing to L ;
07400			ev ← e ; go to out ;
07500			L:
07600			end ;
07700		d [or fail] ;
07800		out:
07900		return(ev) ;
08000		end ;